Many of today's software driven systems are implemented using embedded systems. And embedded system is any electronic system that uses a standard central processor unit (“CPU”) chip, a microprocessor, and the like, but that is not as bulky as a general-purpose workstation, desktop or laptop computer. Such systems generally use microprocessors, or they may use custom-designed chips or both. Embedded systems are used in automobiles, planes, trains, space vehicles, machine tools, cameras, consumer and office appliances, cell phones, personal digital assistants (“PDAs”) and other handhelds as well as robots and toys.
One method of implementing general software applications, for example, embedded systems, utilizes object-oriented design (“OOD”) and Unified Model Language (“UML”). Object-oriented design is concerned with developing an object-oriented model of a software system to implement identified requirements. OOD refines candidate objects into classes, defines message protocols for all objects, defines data structures and procedures, and maps these into an object-oriented programming language. Design is typically done in two phases. The first, called high-level design, deals with the decomposition of the system into large, complex objects. The second phase is called low-level design. In this phase, attributes and methods are specified at the level of individual objects. UML is an object-oriented analysis and design language that can be used to implement OOD.
Embedded systems, which are typically implemented using microprocessor chips, as described previously, with a limited size of random-access memory (“RAM”). Manufacturing a chip with generous RAM size greatly increases the cost of the chip. Straightforward implementation of OOD, for example, in C or C++ programming language for embedded systems requires more RAM than is economically feasible for most chips.
Several prior art systems have tackled the problem of the lack of microprocessor RAM needed for embedded systems. In U.S. Pat. No. 6,343,353 B1 (Kim), incorporated herein by reference, a system is described to provide a micro-controller unit for accessing an external memory using a microcode, thereby scaling down the chip size and improving a stability of the circuit. The micro-controller unit for accessing an external memory according to the characteristics of the external memory, comprises: a ROM storing a series of codes including sequence, address latch enable, read enable and write enable fields, wherein the ROM outputs one of codes in response to a counting value and a program counting determining means for determining the counting value in response to the sequence filed of the outputted code from the ROM and for outputting the counting value to the ROM.
U.S. Pat. No. 6,317,872 B1 (Gee et al.), incorporated herein by reference, teaches an improved symbolic to logical reference resolution method that performs the function of converting symbolic references into logical addresses without changing instructions or reference information in the instruction sequence. Instead, the resolution information for an object is included within the object itself, so any other procedures that might access the object gain the speed advantage of the symbolic to logical resolution that has been performed on the object by the first procedure to reference that object. No modification of the sequence of program instructions is needed, so the program sequence can be stored in lower cost read-only memory (ROM) if desired. Also, since the program sequence is unchanged, checksum methods can be used to insure the integrity of the read-only memory contents for enhanced system reliability that, in turn, may significantly reduce costs associated with the certification of critical systems.
U.S. Pat. No. 6,154,834 (Neal), incorporated herein by reference, teaches a processing unit featuring a substrate with an embedded controller and a memory unit attached to the substrate. The memory unit is loaded with microcode. The embedded controller is interconnected to the memory unit via a communication line. This communication line enables microcode to be transferred from the memory unit to the embedded controller.
U.S. Pat. No. 5,504,903 (Chen et al.), incorporated herein by reference, teaches a simplified programming setup that employs an auto-incrementing pointer and an on-chip read-only memory (ROM) to store the program. The processor of the microcontroller programs its own program memory using the instruction. A pointer to the program memory is used by the instruction to program the program memory, the pointer being capable of auto-incrementing for ease of stepping through the program memory. The processor has an on-chip hard coded ROM with a program containing the program memory programming instructions and other code to permit a relatively simple auto-programming setup.
None of the prior art, however, addresses how to implement OOD for an embedded system such that the ROM-to-RAM ratio for the embedded system is improved. I have determined that improving the ROM-to-RAM ratio would, for example, allow for a more complex OOD implementation of embedded systems without requiring more expensive microprocessors with greater RAM size. What is desirable is, for example, a system and/or method for improving the ROM-to-RAM ratio, and/or the reliability of embedded software applications. It is also desirable to provide a system and/or method that are capable, generally, of allocating programming operations across multiple memories, including RAM and ROM.